package io.yyxx.boot.framework.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimit {

  // 每秒允许通过的请求数（QPS）
  double permitsPerSecond() default 20;

  // 超时时长，默认不等待
  int timeout() default 0;

  // 超时时间单位，默认毫秒
  TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

  // 返回的错误信息
  String msg() default "系统忙，请稍后再试";
}